vmx: Fix realmode exception delivery to correctly check stack pointer size.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 11 Nov 2008 11:10:59 +0000 (11:10 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 11 Nov 2008 11:10:59 +0000 (11:10 +0000)
Bug tracked down by Tim Deegan <tim.deegan@citrix.com>

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/hvm/vmx/realmode.c

index 9bd1f25162b5d9501800177aa69fc0177005de6d..b067eb1615affe95ceb23a32653c688e840eb543 100644 (file)
@@ -69,7 +69,8 @@ static void realmode_deliver_exception(
     frame[1] = csr->sel;
     frame[2] = regs->eflags & ~X86_EFLAGS_RF;
 
-    if ( hvmemul_ctxt->ctxt.sp_size == 32 )
+    /* We can't test hvmemul_ctxt->ctxt.sp_size: it may not be initialised. */
+    if ( hvmemul_ctxt->seg_reg[x86_seg_ss].attr.fields.db )
     {
         regs->esp -= 6;
         pstk = regs->esp;